#!/bin/bash
#Arrastrando un .desktop crea un AppRun
cierralanzador
case $LANG in
	es*)
		MSG1="Arrastre un archivo .desktop."
		MSG2="Buscando el icono de la aplicación en el sistema..."
		MSG3="No se ha podido encontrar el icono.\nSe pondrá uno genérico."
		MSG4="Icono encontrado en:"
		MSG5="Espere unos segundos, la ventana se cerrará sola."
		MSG6="Tomando el nombre de la ventana..."
		MSG7="¿En qué grupo ponemos el lanzador?"
		MSG8="Seleccione una categoría"
		MSG9="Elija"
		MSG10="Categoría"
		MSG11="Accesorios"
		MSG12="Gráficos"
		MSG13="Internet"
		MSG14="Juegos"
		MSG15="Lugares"
		MSG16="Multimedia"
		MSG17="Oficina"
		MSG18="Otros"
		MSG24="Sistema"
		MSG19="El comentario termina en punto, luego, no hacer nada"
		MSG20="Se está ejecutando ya"
		MSG21="No se está ejecutando"
		MSG22="Lanzador"
		MSG23="creado en"
	;;
	gl*)
		MSG1="Arrastre un ficheiro .desktop."
		MSG2="Buscando a icona do aplicativo no sistema..."
		MSG3="Non foi posíbel atopar a icona.\nPoráse un xenérico."
		MSG4="Icona atopada en:"
		MSG5="Agarde uns segundos, a xanela pecharase ela sóa."
		MSG6="Tomando o nome da xanela..."
		MSG7="En qué grupo poñemos o iniciador?"
		MSG8="Seleccione unha categoría"
		MSG9="Escolla"
		MSG10="Categoría"
		MSG11="Accesorios"
		MSG12="Gráficos"
		MSG13="Internet"
		MSG14="Xogos"
		MSG15="Lugares"
		MSG16="Multimedia"
		MSG17="Oficina"
		MSG18="Outros"
		MSG24="Sistema"
		MSG19="O comentario remata cun punto, polo que non se fai nada"
		MSG20="Xa está a executarse"
		MSG21="Non está a executarse"
		MSG22="Iniciador"
		MSG23="creado en"
	;;
	ca*)
		MSG1="Arrossega un arxiu .desktop."
		MSG2="Buscant la icona de l'aplicació en el sistema..."
		MSG3="No s'ha pogut trobar la icona.\nEs posarà un de genèric."
		MSG4="Icona trobat en:"
		MSG5="Espereu uns segons, la finestra es tanca sola."
		MSG6="Prenent el nom de la finestra..."
		MSG7="En quin grup posem el llançador?"
		MSG8="Seleccioneu una categoria"
		MSG9="Trieu"
		MSG10="Categoria"
		MSG11="Accesoris"
		MSG12="Gràfics"
		MSG13="Internet"
		MSG14="Jocs"
		MSG15="Llocs"
		MSG16="Multimèdia"
		MSG17="Oficina"
		MSG18="Altres"
		MSG24="Sistema"
		MSG19="El comentari acaba en punt, després, no fer res"
		MSG20="S'està executant ja"
		MSG21="No s'està executant"
		MSG22="Llançador"
		MSG23="creat en"
	;;
	*)
		MSG1="Drag a  .desktop file."
		MSG2="Looking the application icon in the system..."
		MSG3="Could not find the icon.\nIt will a generic."
		MSG4="Icon found on:"
		MSG5="Wait a few seconds, the window will close automatically."
		MSG6="Taking the name of the window..."
		MSG7="In what group we put the launcher?"
		MSG8="Select a category"
		MSG9="Choose"
		MSG10="Categoría"
		MSG11="Accessories"
		MSG12="Graphics"
		MSG13="Internet"
		MSG14="Games"
		MSG15="Places"
		MSG16="Multimedia"
		MSG17="Office"
		MSG18="Others"
		MSG24="System"
		MSG19="The comment ends at point, then do nothing"
		MSG20="It is running"
		MSG21="Is not running"
		MSG22="Launcher"
		MSG23="created in"
	;;
esac

# Ruta del AppRun del Crea lanzadores
appruta="`dirname "$0"`"

# Si se trata de una carpeta, hay que hacer un lanzador en lugares

if [[ -d "$1" ]];then
	rutacarpeta="$1"
	nombrelanzador=`basename "$1"`
	cp -a /usr/local/share/folderlauncher /usr/local/share/miniapps/Places/"${nombrelanzador}"
	rpl "nombrecarpeta" "${rutacarpeta}" /usr/local/share/miniapps/Places/"${nombrelanzador}"/AppRun
	cierracarga lanzadrox /usr/local/share/miniapps/Places
	exit 0
fi


# MENSAJES EN PANTALLA

function OSD(){
aosd_cat --position=7 --back-color=black\
	    --fore-color=white --back-opacity=200\
	    --padding=5 --fade-in=1100 --fade-out=1100\
	    -u 1100 -n "arial 16" 
}


# TOMAMOS DATOS DEL ARCHIVO .DESKTOP

IDIOMA=`echo $LANG|cut -d"_" -f1`
RUTA_PUNTO_DESKTOP="$1"
#Con un formulario Yad preguntar en qué categoría
CATEGORIA="${MSG11}"
COMMAND="`cat "$RUTA_PUNTO_DESKTOP" |grep -i exec=|sed -n '1 p' |cut -d'=' -f2|cut -d' ' -f1`"
NAME="`cat "$RUTA_PUNTO_DESKTOP"|grep -i "name\[$IDIOMA\]="|sed -n '1 p'|cut -d'=' -f2`"
if [ "$NAME" = "" ];then
NAME="`cat "$RUTA_PUNTO_DESKTOP"|grep -i name=|sed -n '1 p'|cut -d'=' -f2`"
fi
if [ "$NAME" = "" ];then
	zenity --info --text "${MSG1}"
	exit 0
fi

# AQUÍ TOMAMOS EL TIP QUE SALDRÁ AL PASAR EL RATÓN POR ENCIMA
# DEL LANZADOR.

COMENTARIO_EN="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment\[en\]"|cut -d'=' -f2`"
if [ "$COMENTARIO_EN" = "" ];then
COMENTARIO_EN="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment="|cut -d'=' -f2`"
fi
COMENTARIO_ES="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment\[es\]"|cut -d'=' -f2`"
if [ "$COMENTARIO_ES" = "" ];then
COMENTARIO_ES="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment="|cut -d'=' -f2`"
fi
COMENTARIO_GL="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment\[gl\]"|cut -d'=' -f2`"
if [ "$COMENTARIO_GL" = "" ];then
COMENTARIO_GL="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment="|cut -d'=' -f2`"
fi
COMENTARIO_CA="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment\[ca\]"|cut -d'=' -f2`"
if [ "$COMENTARIO_CA" = "" ];then
COMENTARIO_CA="`cat "$RUTA_PUNTO_DESKTOP" |grep -i "comment="|cut -d'=' -f2`"
fi



# AQUÍ CONSEGUIMOS LA RUTA DEL ICONO

nombreicono="`cat "$RUTA_PUNTO_DESKTOP"|grep -i icon=|cut -d "=" -f2`"
if [ "${nombreicono:0:1}" = "/" ];then
	RUTA_ICONO=$nombreicono
else

#hay que buscar la ruta del icono
	if [[ "$nombreicono" == *.* ]];then
		nombreicono=`echo $nombreicono|cut -d"." -f1`
	
	fi
#buscamos en todos los lugares y luego cogemos uno, si es vectorial, mejor
	echo "${MSG2}"|OSD&
	find /usr/share/icons/ /usr/local /usr/share/pixmaps -name $nombreicono.svg >/tmp/listaiconossvg
	find /usr/share/icons/ /usr/local /usr/share/pixmaps -name $nombreicono.png >/tmp/listaiconospng
	find /usr/share/icons/ /usr/local /usr/share/pixmaps -name $nombreicono.xpm >/tmp/listaiconosxpm
	hayiconovectorial=`cat /tmp/listaiconossvg`
	if [ "$hayiconovectorial" != "" ];then	
		RUTA_ICONO=`cat /tmp/listaiconossvg|tail -n1`
	else
		
		if [ "$RUTA_ICONO" = "" ];then RUTA_ICONO=`cat /tmp/listaiconospng|grep 256|tail -n1`;fi
		if [ "$RUTA_ICONO" = "" ];then RUTA_ICONO=`cat /tmp/listaiconospng|grep 128|tail -n1`;fi
		if [ "$RUTA_ICONO" = "" ];then RUTA_ICONO=`cat /tmp/listaiconospng|grep 64|tail -n1`;fi
		if [ "$RUTA_ICONO" = "" ];then RUTA_ICONO=`cat /tmp/listaiconospng|tail -n1`;fi
		if [ "$RUTA_ICONO" = "" ];then RUTA_ICONO=`cat /tmp/listaiconosxpm|tail -n1`;fi
	fi
		
fi

if [ "$RUTA_ICONO" = "" ];then
	zenity --info --text "${MSG3}"
else
	sleep 2;echo "${MSG4}$RUTA_ICONO"|OSD&
fi


# AQUÍ TENEMOS QUE COGER EL NOMBRE DE LA VENTANA POR SI
# EL PROGRAMA TARDA EN CARGAR, QUE SALGA EL MENSAJE CARGANDO...

$COMMAND&
#Esto es un churro, porque no sabemos cuánto tardará la aplicación en cargar.
sleep 2;echo "${MSG5}"|OSD&
sleep 3;echo "${MSG6}"|OSD&
RULANDO=`rulando $COMMAND`
sleep 4;
ps ax|sed '/\[/d'>/tmp/psax
REALNAME="`cat /tmp/psax|tail -n2|head -n1|cut -d":" -f2|cut -d' ' -f2`"
if [ "$REALNAME" = "python" ];then
REALNAME="`cat /tmp/psax|tail -n2|head -n1|cut -d":" -f2|cut -d' ' -f3`"
fi
if [ "$REALNAME" = "/usr/bin/python" ];then
REALNAME="`cat /tmp/psax|tail -n2|head -n1|cut -d":" -f2|cut -d' ' -f3`"
fi

WINDOWNAME="`wmctrl -l|tail -n1|awk -F " " '{print $4}'`"
#zenity --info --text "$WINDOWNAME"

if [ "$RULANDO" = "No" ];then
	echo "No necesita tiempo de espera ni que se cierre la aplicación"
else

	killall $REALNAME
	kill `cat /tmp/psax|tail -n2|head -n1|cut -d ' ' -f2`
fi

# PREGUNTAMOS DÓNDE SE VA A COLOCAR EL LANZADOR
# SÓLO HAY QUE TRADUCIR LA COLUMNA DE grÁficos

categoria=$(zenity  --list  --text "${MSG7}" --title "${MSG8}" --height 300 --radiolist  --column "${MSG9}" --column "${MSG10}" TRUE "${MSG11}" FALSE "${MSG12}" FALSE "${MSG13}" FALSE "${MSG14}" FALSE "${MSG15}" FALSE "${MSG16}" FALSE "${MSG17}" FALSE "${MSG18}" FALSE "${MSG24}")
	if [ "$categoria" = "${MSG11}" ];then CATEGORIA="Accessories";fi
	if [ "$categoria" = "${MSG12}" ];then CATEGORIA="Graphics";fi
	if [ "$categoria" = "${MSG13}" ];then CATEGORIA="Internet";fi
	if [ "$categoria" = "${MSG14}" ];then CATEGORIA="Games";fi
	if [ "$categoria" = "${MSG15}" ];then CATEGORIA="Places";fi
	if [ "$categoria" = "${MSG16}" ];then CATEGORIA="Multimedia";fi
	if [ "$categoria" = "${MSG17}" ];then CATEGORIA="Office";fi
	if [ "$categoria" = "${MSG18}" ];then CATEGORIA="Others";fi
	if [ "$categoria" = "${MSG24}" ];then CATEGORIA="System";fi

if [ "$NAME" = "$COMMAND" ];then $NAME="$NAME!";fi
#zenity --info --text "$NAME"
mkdir /usr/local/share/miniapps/$CATEGORIA/"$NAME"

cp $RUTA_ICONO /usr/local/share/miniapps/$CATEGORIA/"$NAME"/DirIcon
cp -a "$appruta"/Example/.DirIcon /usr/local/share/miniapps/$CATEGORIA/"$NAME"/

# CREAMOS EL ARCHIVO DEL TIP EN xml

# Le introducimos un punto al final si no lo tiene.
# Partimos el comentario larguísimo de los .desktop en 4 palabras
# Añadimos 4 espacios al principio ^ y cuatro más al final $

punto=`echo $COMENTARIO_EN|tail -c 2`
if [ "$punto" = "." ];then
	echo "${MSG19}"
else
	COMENTARIO_EN="`echo "$COMENTARIO_EN".`"
fi

for word in $COMENTARIO_EN;do echo $word;done|paste -d " " - - - - > /tmp/comentario_en1
perl -pe 's/^/    /' /tmp/comentario_en1 > /tmp/comentario_en2
perl -pe 's/$/    /' /tmp/comentario_en2 > /tmp/COMENTARIO_EN

punto=`echo $COMENTARIO_ES|tail -c 2`
if [ "$punto" = "." ];then
	echo "${MSG19}"
else
	COMENTARIO_ES="`echo "$COMENTARIO_ES".`"
fi

for word in $COMENTARIO_ES;do echo $word;done|paste -d " " - - - - > /tmp/comentario_es1
perl -pe 's/^/    /' /tmp/comentario_es1 > /tmp/comentario_es2
perl -pe 's/$/    /' /tmp/comentario_es2 > /tmp/COMENTARIO_ES

punto=`echo $COMENTARIO_GL|tail -c 2`
if [ "$punto" = "." ];then
	echo "${MSG19}"
else
	COMENTARIO_GL="`echo "$COMENTARIO_GL".`"
fi

for word in $COMENTARIO_GL;do echo $word;done|paste -d " " - - - - > /tmp/comentario_gl1
perl -pe 's/^/    /' /tmp/comentario_gl1 > /tmp/comentario_gl2
perl -pe 's/$/    /' /tmp/comentario_gl2 > /tmp/COMENTARIO_GL

punto=`echo $COMENTARIO_CA|tail -c 2`
if [ "$punto" = "." ];then
	echo "${MSG19}"
else
	COMENTARIO_CA="`echo "$COMENTARIO_CA".`"
fi

for word in $COMENTARIO_CA;do echo $word;done|paste -d " " - - - - > /tmp/comentario_ca1
perl -pe 's/^/    /' /tmp/comentario_ca1 > /tmp/comentario_ca2
perl -pe 's/$/    /' /tmp/comentario_ca2 > /tmp/COMENTARIO_CA



cat <<-EOF >/usr/local/share/miniapps/$CATEGORIA/"$NAME"/AppInfo.xml
<?xml version="1.0"?>
<AppInfo>
  <Summary>
`cat /tmp/COMENTARIO_EN`
   </Summary>
  <Summary xml:lang="es">
`cat /tmp/COMENTARIO_ES`
  </Summary>
  <Summary xml:lang="gl">
`cat /tmp/COMENTARIO_GL`
  </Summary>
  <Summary xml:lang="ca">
`cat /tmp/COMENTARIO_CA`
  </Summary>
</AppInfo>
	
EOF


#Crear el AppRun
cat <<-EOF >/usr/local/share/miniapps/$CATEGORIA/"$NAME"/AppRun
#!/bin/bash

command="$COMMAND"
realname="$REALNAME"
windowname="$WINDOWNAME"
cierralanzador
EOF

cat <<-"EOF" >>/usr/local/share/miniapps/$CATEGORIA/"$NAME"/AppRun



################################################################
#accel=`hayaceleracion`
#if [ "$accel" = "Yes" ];then echo "Hay aceleración gráfica";else zenity --info --text "Parece que no tienes aceleración gráfica." && exit 0;fi
################################################################
#internet=`hayinternet`
#if [ "$internet" = "down" ];then zenity --info --text "Parece que no tienes conexión a Internet." && exit 0;fi
################################################################
if [ "$realname" = "" ];then realname=`echo "$command"`;fi
rulando=`rulando "$realname"`
echo $rulando
if [ "$rulando" = "Yes" ]; then
	echo "${MSG20}"
	#PREGUNTAR si se quiere lanzar otra vez el programa?
	#Eleva la ventana
	wmctrl -a "$windowname"
else
	echo "${MSG21}"
	$command "$@"&
	cargando "$windowname" &
fi

# command es lo que se ejecuta desde terminal
# realname es el nombre real del programa una vez ejecutado, se puede saber lanzando ps ax
# windowname es el nombre de la ventana, se puede saber con wmctrl -l
################################################################

EOF

chmod +x /usr/local/share/miniapps/$CATEGORIA/"$NAME"/AppRun

killall ROX-Filer
ESTILO=`cat ~/.config/lxsession/profile`
case $ESTILO in
	PICAROS) lanzadrox -p picaros& ;;
	NETBOOK) lanzadrox -p netbook& ;;
esac
#zenity --info --text "A continuación, modifique a su gusto la descripción del lanzador."
#leafpad /usr/local/share/miniapps/$CATEGORIA/"$NAME"/AppInfo.xml
pcmanfm /usr/local/share/miniapps/$CATEGORIA/"$NAME"/
zenity --info --text "${MSG22} «$NAME» ${MSG23} $categoria"


